package org.x.user.service;

import java.lang.Boolean;
import java.util.List;

import com.baomidou.mybatisplus.extension.service.IService;
import org.x.user.entity.SysDept;
import org.x.user.dto.DeptDTO;
import org.x.user.query.DeptQuery;

/**
 * 组织架构管理
 *
 * @author 夏包包
 * @date 2025-03-08 13:39:03
 */
public interface DeptService extends IService<SysDept> {
    /**
     * 部门列表
     */
    List<SysDept> getDeptList(DeptDTO deptDTO);

    /**
     * 新增部门:如果部门信息存在，返回失败信息；否则将部门数据保存到数据库
     *
     * @param deptDTO 部门入参对象
     * @return
     */
    Boolean addDept(DeptDTO deptDTO);

    /**
     * 删除部门:如果部门信息不存在，返回失败信息；否则删除部门及其子部门信息
     *
     * @param deptDTO 部门入参对象
     * @return
     */
    Boolean deleteDept(DeptDTO deptDTO);

    /**
     * 修改部门:如果部门信息不存在，返回失败信息；否则更新部门信息
     *
     * @param deptDTO 部门入参对象
     * @return
     */
    Boolean updateDept(DeptDTO deptDTO);

    /**
     * 查询部门:如果部门信息不存在，返回失败信息；否则查询部门信息
     *
     * @param deptQuery 部门查询入参对象
     * @return  部门实体对象
     */
    SysDept getDeptInfo(DeptQuery deptQuery);

    /**
     * 查询部门层次关系:查询部门层级关系
     *
     * @param deptQuery 部门查询入参对象
     * @return  部门实体对象
     */
    SysDept getDeptHierarchy(DeptQuery deptQuery);
}
